With the advent of mobile computing devices, distributed computing applications are growing in number and complexity. The present Applicants and/or Assignees have developed a suite of innovations relating to mobile applications. These applications operate under the name of Voyager™. The Voyager suite provides mobile agent applications that can communicate with agents on other devices. Agents can communicate with each other using a client/server model. A server application on one device can establish a server context that provides server functions to client applications on other devices. The server context operates an object request broker (ORB), as is known. The ORB provides a brokering service to handle client requests for a distributed object or component. Having ORB support in a network means that a client program can request a service without having to understand where the server is in a distributed network or exactly how the interface to the server program is realized. Components can find out about each other and exchange interface information as they are running.
In a mobile applications or distributed computing environment, it can at times be necessary or desirable to move an Object Request Broker (ORB) and associated services from one host location to another. Reasons for the move might include the original computer requiring a shutdown for maintenance reasons, because of loss of power (and UPS depletion), or for load balancing reasons. The challenging requirement is to execute the move with zero downtime for the services registered in the ORB.
Existing solutions include moving an entire virtual machine in which the ORB is running or shutting down the application containing the ORB and restarting the application on the destination machine. A problem with these solutions is that they sometimes fail to satisfy the continuous operation requirement (they shut down ORB operation for the duration of the move), or lack the granularity of moving a single ORB (e.g., moving an entire virtual machine).
What is required is an improved system and method for providing continuous service of a server application.